﻿<p><code>/etc/group</code>档案就是在记录 <code>GID</code> 与组名的对应，结构如下：
    <pre><code>[root@centos-chuan ~]# cat /etc/group | head -n 5
root:x:0:root
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon</code></pre>
</p>
<p>这个档案每一行代表一个群组，也是以冒号『:』作为字段的分隔符，共分为四栏，每一字段的意义是：</p>
<ol>
    <li><strong>组名：</strong><br />
        群组名称
    </li>
    <li><strong>群组密码：</strong><br />
        通常不需要设定，这个设定通常是给『群组管理员』使用的，目前很少有机会设定群组管理
        员啦！ 同样的，密码已经移动到 <code>/etc/gshadow</code> 去，因此这个字段只会存在一个『x』而已；
    </li>
    <li><strong>GID：</strong><br />
        就是群组的 <code>ID</code> 啊。我们 <code>/etc/passwd</code> 第四个字段使用的<code>GID</code> 对应的群组名，就是由这里对应出
        来的
    </li>
    <li><strong>此群组的账号名称：</strong><br />
        我们知道一个账号可以加入多个群组，那某个账号想要加入此群组时，将该账号填入这个字段即
        可。 举例来说，如果我想要让 <code>test</code> 也加入 <code>root</code> 这个群组，那么在第一行的最后面加上
        <code>,test</code>，注意不要有空格  使成为<code>root:x:0:root,test</code>就可以
    </li>
</ol>

<p>至于在 <code>/etc/group</code> 比较重要的特色在于第四栏，这里有个问题就是：『假如我同时加入多个群组，
    那么我在作业的时候，到底是以那个群组为准？』 这里涉及到一个『有效群组』的概念。
</p>

<strong>初始群组(initial group) </strong>
<p>我们创建了一个新的用户<code>test</code>，查看此用户的一些基本信息如下：
    <pre><code>[root@centos-chuan ~]# grep test /etc/passwd /etc/group /etc/gshadow
/etc/passwd:test:x:500:500::/home/test:/bin/bash
/etc/group:users:x:100:test
/etc/group:test:x:500:
/etc/gshadow:users:::test
/etc/gshadow:test:!::</code></pre>
    如上，<code>test</code>在<code>/etc/passwd</code>中对应的<code>gid</code>是500，<strong>此即为<code>test</code>用户的初始群组(initial group)。</strong><br />
    此外，在<code>/etc/group</code>档案中的<code>users</code>群组第四栏发现有<code>test</code>账号，所以<code>users</code>也是账号
    <code>test</code>所属的非初始群组。
</p>

<strong>groups:查看有效(effective group)与支持群组</strong>

<p>当前用户如何知道自己所支持的群组，可以使用<code>groups</code>命令来查看：
    <pre><code>[test@centos-chuan ~]$ groups
test users</code></pre>
    第一个输出的群组则为当前账号的有效群组(effective group)
</p>

<strong>权限问题</strong>
<ul>
    <li>如果是读取、写入、执行档案时：<br />
        由于<code>test</code>账号支持<code>test,users</code>两个群组，所以这两个群组拥有的权限，<code>test</code>
        账号都拥有。
    </li>
    <li>如果是创建档案：<br />
        档案的群组为该账号的有效群组，即使用<code>groups</code>查看的有效群组。
        <pre><code>[test@centos-chuan ~]$ touch test
[test@centos-chuan ~]$ ll
-rw-rw-r--. 1 test test 0 1月  14 19:04 test</code></pre>
    </li>
</ul>

<strong>newgrp: 有效群组的切换</strong>
<p>
    可以使用 <code>newgrp</code>命令进行有效群组的切换，注意使用 <code>newgrp</code> 是有限制的，那就是你想要切换的群
    组必须是你已经有支持的群组。
</p>
<pre><code>[test@centos-chuan ~]$ newgrp users
[test@centos-chuan ~]$ groups
users test
[test@centos-chuan ~]$ touch test2
[test@centos-chuan ~]$ ll
-rw-rw-r--. 1 test test  0 1月  14 19:04 test
-rw-r--r--. 1 test users 0 1月  14 19:08 test2</code></pre>


